;-------------------------------------------------------------------------------- 
; The following is a set of characteristics for each player.  Every player has
; these, and it is an absolute essential for multiplayer games.
; These are the only attributes passed between players.
;--------------------------------------------------------------------------------

Player1 .equ 400
Player2 .equ 480
Player3 .equ 560
Player4 .equ 640



;Player_Screen_X and Player_Screen_Y are used for drawing a player's unit on screen.
;This applies only to the immediate player, not to any of the player's opponents.
;The reason is, a player's unit is always on screen, but from his view, opponent
;units can be off-screen.



Player_Screen_X .equ 0
Player_Screen_Y .equ  1

;Player_Map_X and Player_Map_Y determine where the unit is in terms of the entire map,
;not just the screen.  While this probably has many uses throughout the program,
;the immediate use is so that opponent units can be drawn if in range of the player's
;screen, or ignored if out of range of the screen.  Another immediate use is determining
;if a unit is near the edge of the map or not.  Player_Map_X and Player_Map_Y require
;three bytes each.

Player_Map_X .equ 2
Player_Map_Y .equ  5

;The next value is the amount of belthium crystals a player owns.  It takes 2 bytes, and
;cannot exceed 50000.

Player_Money .equ  8

;Unit_Direction determines the direction the player's unit is going.

Player_Unit_Direction .equ  10

;Player_Turret_Direction is used for determining in which direction a weapon is fired,
;even though only two units have true turrets.  For a Scouter and a Tank, this variable
;is used to determine which direction to fire, and also determines which turret sprite to
;draw.  For a Balkstone, this variable is used for the Extension Coils upgrade, since
;a Balkstone can only fire forward.  For all other units, Player_Turret_Direction only
;tells the calculator which direction the weapons fire at.

Player_Turret_Direction .equ 11


;Every unit, with the exception of Scouters, requires fuel to operate.  Two bytes
;are required to store unit fuel.

Player_Fuel .equ  12

;Several units require sephrane gas for their upgrades.  Unlike fuel, sephrane gas
;requires only one byte of data.

Player_Sephrane_Gas .equ  14



Player_Unit_HP .equ 15 ;Requires two bytes

Player_Unit_Firing_Range .equ 16  ;A range of 1 denotes 16 pixels.
                                                    ;Ranges are always whole numbers.

;If one of these values is 0, a unit cannot fire at that kind of unit.  Of course,
;a value other than zero represents the damage to the opposing unit
                                                   
Player_Unit_Damage_Per_Shot_At_Ground_Units .equ  18
Player_Unit_Damage_Per_Shot_At_Air_Units .equ  19

Player_Unit_Fire_Rate .equ  20

;Unit speed.  For units with acceleration capabilities, this is a maximum speed.

Player_Unit_Speed .equ 21

Player_Unit_Acceleration .equ  22  ;Only four units accelerate
                                                    ;and decelerate: Reclauda, Camoza,
                                                    ;Argo, and Balkstone

;Some unts have upgrades with limited use.  This variable keeps track of how many uses of
;the upgrade the unit has left.

Player_Upgrade_Stock .equ 23

;Player_Abilities_Researched is 5 bytes.  There are about 13 different kinds of upgrades,
;but there are some abilities that are required to be researched twice for use
;with different units (e.g. Cloak can be used by three different units, so it has to
;be researched once for each different unit, a total of 3x it has to be researched
;if all three units are to have it.  

;Two bytes, therefore, are four sets of four bits telling what kind of the 13 abilities
;a unit has...these two bytes are meant specifically for the unit.  The last 3 bytes,
;meant for every unit a player can use, describes whether a certain ability
;for a certain unit has been researched.

Player_Abilities .equ  24


;This takes 16 bytes of data.  A unit has, at most, 4 weapons, including special
;abilities.  Each weapon has X and Y coordinates 2 bytes in length because
;the weapons have to be drawn to map coordinates rather than screen coordinates.

Player_Weapon_Data .equ 29

;A name can be up to 13 characters.

Player_Name .equ  45

;PlayerType is used for determining if a player is AI or an actual player
;Value 0 is Human Player 1, Value 1 is Human Player 2, 2-19 is AI difficulties for up
;to 3 AIs.  The difference between this and Player_Type is this value is used for 
;determining player functions during gameplay, whereas Player_Type is used for the lobby
;to determine who is hosting and who is joining.

Player_Type_In_Game .equ 59
Player_Team .equ  60